﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using Microsoft.Practices.ServiceLocation;
//using NHibernate;
using Inmobiliaria.Core.DomainServiceInterfaces;
using Inmobiliaria.Data;
using Inmobiliaria.Exceptions;
//using Inmobiliaria.Infrastructure.Audit;
//using Inmobiliaria.Exceptions.SinalicServicios;

namespace Inmobiliaria.Infrastructure.Aspects
{
    //class TransactionAspect : Castle.Core.Interceptor.IInterceptor
    //{
    //    //#region IInterceptor Members

    //    //public void Intercept(Castle.Core.Interceptor.IInvocation invocation)
    //    //{
    //    //    //se setea en el contexto el proceso que se esta ejecutando para que pueda ser auditado
    //    //    var context = ServiceLocator.Current.GetInstance<IContextProvider>();
    //    //    context.SetData("process", invocation.Method.DeclaringType.FullName + "." + invocation.Method.Name);

    //    //    bool initTransaction = NHSessionManager.Instance.BeginTransaction();
    //    //    try
    //    //    {
    //    //        invocation.Proceed();
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.CommitTransaction();
    //    //    }
    //    //    catch (ComunicacionException ex)
    //    //    {
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.RollbackTransaction();
    //    //        throw;
    //    //    }
    //    //    catch (AnulacionLicenciaException)
    //    //    {
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.CommitTransaction();
    //    //        throw;
    //    //    }
    //    //    catch (CustomException)
    //    //    {
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.RollbackTransaction();
    //    //        throw;
    //    //    }
    //    //    catch (ApplicationException ex)
    //    //    {
    //    //        //se audita el rollback de la transaccion en la auditoria
    //    //        var logger = ServiceLocator.Current.GetInstance<IAuditPersister>();
    //    //        logger.LogAbortTrans(
    //    //            NHSessionManager.Instance.GetSession().GetSessionImplementation().SessionId.ToString());
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.RollbackTransaction();
    //    //        throw;
    //    //    }
    //    //    catch (Exception ex)
    //    //    {
    //    //        //se audita el rollback de la transaccion en la auditoria
    //    //        var logger = ServiceLocator.Current.GetInstance<IAuditPersister>();
    //    //        logger.LogAbortTrans(
    //    //            NHSessionManager.Instance.GetSession().GetSessionImplementation().SessionId.ToString());
    //    //        if (initTransaction)
    //    //            NHSessionManager.Instance.RollbackTransaction();
    //    //        throw;
    //    //    }

    //    //}

    //    //#endregion
    //    // }
    //}
}